<?php
    if (!defined('ZT')) exit;
    
    mysqli_report(MYSQLI_REPORT_ALL - MYSQLI_REPORT_INDEX);
            
    DB::$conexion = mysqli_init( );
    DB::$conexion->real_connect('localhost', 'root', null,'ggrupos', null, null, MYSQLI_CLIENT_FOUND_ROWS);
    DB::$conexion->query('SET NAMES "latin1"');
        
    class DB {
        public static $conexion;
                        
        static function raw_query($query)
        {
            $res = self::$conexion->query($query);

            if (is_object($res)) {
                $res = new ZT_ResultadoDB($res);
            }

            return $res;
        }
        
        static function query($query)
        {
            $args = func_get_args( );

            for ($i = 1, $x = 0; ; ++$i) {
                $x = strpos($query, '?', $x);
                
                if ($x === false) {
                    return self::raw_query($query);
                }
                
                $arg = $args[$i];
                
                if ($arg === null) {
                    $arg = 'null';
                }
                else if (is_string($arg) || !is_scalar($arg)) {
                    $arg = '\''.self::$conexion->escape_string($arg).'\'';
                }
                
                $query = substr_replace($query, $arg, $x, 1);
                $x += strlen($arg); 
            }
        }
    
        static function insert_id( )
        {
            $res = self::$conexion->query('SELECT LAST_INSERT_ID( )')->fetch_row( );
            return $res[0];
        }

        static function affected_rows( )
        {
            $res = self::$conexion->query('SELECT ROW_COUNT( )')->fetch_row( );
            return $res[0];
        }
        
        static function found_rows( )
        {
            $res = self::$conexion->query('SELECT FOUND_ROWS( )')->fetch_row( );
            return $res[0];
        }
    }
        
    class ZT_ResultadoDB {
        private $resultado;
      
        function __construct($res)
        {
            $this->resultado = $res;
        }
        
        function fetch_row( )
        {
            return $this->resultado->fetch_row( );
        }
        
        function fetch_assoc( )
        {
            return $this->resultado->fetch_assoc( );
        }
        
        function fetch_value( )
        {
            $fila = $this->resultado->fetch_row( );
            
            if ($fila) {
                return $fila[0];
            }
        }
        
        function fetch_all_assoc( )
        {
            $arr = array( );
            
            while ($fila = $this->resultado->fetch_assoc( )) {
                $arr[] = $fila;
            }
            
            return $arr;
        }
    
        function fetch_all_row( )
        {
            $arr = array( );
            
            while ($fila = $this->resultado->fetch_row( )) {
                $arr[] = $fila;
            }
            
            return $arr;
        }
                        
        function fetch_all_value( )
        {
            $arr = array( );
            
            while ($fila = $this->resultado->fetch_row( )) {
                $arr[] = $fila[0];
            }
            
            return $arr;
        }
        
        function fetch_required_assoc( )
        {
            $fila = $this->resultado->fetch_assoc( );
            
            if ($fila) {
                return $fila;
            }
            
            throw new Exception('DB - Fila requerida');
        }
        
        function fetch_required_row( )
        {
            $fila = $this->resultado->fetch_row( );

            if ($fila) {
                return $fila;
            }
            
            throw new Exception('DB - Fila requerida');
        }
        
        function fetch_required_value( )
        {
            $fila = $this->resultado->fetch_row( );
            
            if ($fila) {
                return $fila[0];
            }
            
            throw new Exception('DB - Fila requerida');
        }
    }
?>